import path from 'path';
import { defineConfig } from 'rollup';
import typescript from 'rollup-plugin-typescript2'; // 引入 TypeScript 插件
import { terser } from "rollup-plugin-terser";// 用于压缩代码

const tsConfig={
  tsconfig: './tsconfig.json', // 使用 tsconfig.json 配置
  useTsconfigDeclarationDir: true // 确保插件遵循 tsconfig 中的 declarationDir 配置
}
const terserConfig = {
  compress: {
    drop_console: true, // 去除 console 语句
  },
  mangle: true, // 混淆变量名
 }

export default defineConfig([
  // 打包为 UMD 格式，适用于全局引入
  {
    input: 'src/index.ts',
    output: {
      file: 'dist/lib/index.umd.js',
      format: 'umd', // UMD 格式
      name: 'MyLibrary', // 绑定到全局变量 MyLibrary
      sourcemap: true
    },
    plugins: [
      typescript({
       ...tsConfig
      }) ,
      terser(
        {
          ...terserConfig
        }
      ) // 压缩输出代码
    ]
  },
  // 打包为CJS格式，支持 Node.js 模块引入
  {
    input: 'src/index.ts',
    output: {
      file: 'dist/lib/index.cjs.js',
      format: 'cjs',
      sourcemap: true
    },
    plugins: [
      typescript({
        ...tsConfig
      }) ,
      terser(
        {
          ...terserConfig
        }
      ) // 压缩输出代码
    ]
  },
  // 打包为 ESM 格式，支持按需引入
  {
    input: 'src/index.ts',
    output: {
      // dir: 'dist/lib', // 输出目录
      file: 'dist/lib/index.esm.js', // 输出目录
      format: 'esm', // ES Module 格式
      sourcemap: true
    },
    plugins: [
      typescript({
        ...tsConfig
      }), // 使用 TypeScript 插件
      terser(
        {
          ...terserConfig
        }
      ) // 压缩输出代码
    ]
  }
]);
